package com.wl.common;

import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

import java.io.File;
import java.util.List;

import static com.wl.common.ConverterDocMain.converterMain;
import static com.wl.common.UIHelper.fileListView;
import static com.wl.common.WindowComponent.showAlert;
import static com.wl.config.SettingConfig.readYamlFile;

public class FileButton {

  private static File selectedFile;
  private static ComboBox<String> formatComboBox;

  public static Button getFileUploaderButton(Stage primaryStage) {
    Button uploadButton = new Button("上传文件");
    uploadButton.setOnAction(e -> {
      FileChooser fileChooser = new FileChooser();
      selectedFile = fileChooser.showOpenDialog(primaryStage);
      if (selectedFile != null) {
        System.out.println("上传的文件名称: " + selectedFile.getName());
        //获取上传文件的后缀
        String fileExtension = FileUtil.getFileExtension(selectedFile);
        System.out.println("上传的文件格式: " + fileExtension);
        fileListView.getItems().add(selectedFile.getName());
      } else {
        System.out.println("警告⚠️：用户没有选择上传要转换的文件");
        showAlert("虚无~~~", "你上传了一个寂寞", "请选择你要转换的文件。");
      }
    });
    return uploadButton;
  }

  public static Button getFileConvertButton(Stage primaryStage) {
    // 按钮组件
    Button convertButton = new Button("转换");
    convertButton.setOnAction(e -> {
      String selectedFormat = formatComboBox.getValue();
      if (selectedFormat != null && selectedFile != null) {
        System.out.println("\n上传的文件名称: " + selectedFile.getName());
        System.out.println("用户需要将文件转换成: " + selectedFormat + "\n");
        converterMain(selectedFormat, selectedFile);
      } else if (selectedFile == null) {
        System.out.println("警告⚠️：用户没有上传文件或用户没有选择要转换的文件类型");
        showAlert("你在甚么(O_o)??？", "等等！！请检查一下你是否上传文件以及选择了文件类型", "请选择你要转换的文件类型或上传你的文件。");
      } else {
        System.out.println("警告⚠️：用户没有选择要转换的类型");
        showAlert("哈？？？", "请选择你要将文件转换成的类型啊（小天才）", "请选择你要转换的文件类型。");
      }
    });
    return convertButton;
  }

  /**
   * 获取文件下拉框组件
   *
   * @param yamlKeyOptions yaml文件配置的下拉框选项的Key
   * @return 返回创建的下拉框
   */
  public static ComboBox getFileDropDownButton(String yamlKeyOptions) {
    // 创建下拉框
    formatComboBox = new ComboBox<>();
    // 增加下拉框选项
    List<String> fileTypes = readYamlFile(yamlKeyOptions, List.class);
    formatComboBox.getItems().addAll(fileTypes);
    return formatComboBox;
  }
}
